package CollectionTest;

import java.util.ArrayList;
import java.util.List;

/*
ArrayList数组
    1.默认初始化容量是10(底层先创建了一个长度为0的数组，当添加第一个元素时，初始化容量为10)
    2.集合底层是一个Object[]数组
    3.ArrayList数组的扩容
        原先容量的1.5倍
        ArrayList集合底层是数组，怎么优化？
            尽可能少的扩容，因为数组扩容效率比较低，建议在使用ArrayList集合的时候
            预估元素的个数，给定一个初始化容量
    4.数组优点:
        检索效率较高
    5.数组缺点
        随机增删效率较低，另外数组无法存储大数据量，很难找到一块大的连续空间
    6.向数组末尾添加元素，效率很高，不受影响
 */
public class ArrayListTest1 {
    public static void main(String[] args){
        //默认初始化容量是10
        List arrayList = new ArrayList();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5);
        arrayList.add(6);
        arrayList.add(7);
        arrayList.add(8);
        arrayList.add(9);
        arrayList.add(10);
        //添加元素时，超过了集合容量，ArrayList数组会自动扩容
        //int newCapacity = ArraysSupport.newLength(oldCapacity,minCapacity - oldCapacity, oldCapacity >> 1 //增长值);
        //原先是10，增长了5，扩容后为15，扩容了1.5倍
        arrayList.add(11);

        //指定容量构造方法 指定为100的容量
        List list2 = new ArrayList(100);
    }
}
